/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import conexion.Coneccion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author USUARIO
 */
public class ModSeg_Rol {
    
    private Integer id_rol;
    private String nombre;
    private String descripcion;
    private int fk_idusuario_crea;
    private int fk_idusuario_mod;
    private boolean eliminado;
    private String accion;
    
    private ArrayList<ModSeg_Pagina> lista_pag;

    public ModSeg_Rol() {
        this.id_rol = 0;
        this.nombre = "";
        this.descripcion = "";
    }

    public ArrayList<ModSeg_Pagina> getLista_pag() {
        return lista_pag;
    }

    public void setLista_pag(ArrayList<ModSeg_Pagina> lista_pag) {
        this.lista_pag = lista_pag;
    }
    
    

    public int getFk_idusuario_crea() {
        return fk_idusuario_crea;
    }

    public void setFk_idusuario_crea(int fk_idusuario_crea) {
        this.fk_idusuario_crea = fk_idusuario_crea;
    }

    public int getFk_idusuario_mod() {
        return fk_idusuario_mod;
    }

    public void setFk_idusuario_mod(int fk_idusuario_mod) {
        this.fk_idusuario_mod = fk_idusuario_mod;
    }

    public boolean isEliminado() {
        return eliminado;
    }

    public void setEliminado(boolean eliminado) {
        this.eliminado = eliminado;
    }

    public Integer getId_rol() {
        return id_rol;
    }

    public void setId_rol(Integer id_rol) {
        this.id_rol = id_rol;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }


    public String getAccion() {
        return accion;
    }

    public void setAccion(String accion) {
        this.accion = accion;
    }
    
    
        /* __________________________________________________________________ */
    /* ------------------------------------------------------------------ */
    public Integer operaciones(ModSeg_Rol v) {
        String inserto;        
        CallableStatement ps = null;
        ResultSet rs= null;
        Integer id = 0;
        Connection con = Coneccion.getConexion();        
        try {
            ps = con.prepareCall("{call mante_pas_rol_operacion(?,?,?,?,?,?)}");
            ps.setInt(1, v.getId_rol());
            ps.setString(2, v.getNombre());
            ps.setString(3, v.getDescripcion());
            ps.setInt(4, v.getFk_idusuario_crea());
            ps.setInt(5, v.getFk_idusuario_mod());
            ps.setString(6, v.getAccion());            
            rs  = ps.executeQuery();//AQUI
            if (rs.next()) {
                if (v.getAccion().equals("U")) {
                    inserto = "La operacion fue actualizado correctamente";
                    id = rs.getInt(1);
                } else {
                    if (v.getAccion().equals("I")) {
                        inserto = "La operacion fue insertado correctamente";
                        id = rs.getInt(1);
                    } else {
                        inserto = "La operacion fue eliminado correctamente";
                        id = rs.getInt(1);
                    }
                }
            } else {
                inserto = "No se pudo insertar ";
            }
        } catch (Exception ex) {
            inserto = ex.getMessage();
            System.out.println("fallo ERROR "+ex.getMessage());            
        } finally {
            try {
                rs.close();
                ps.close();
                con.close();
            } catch (Exception ex) {
            }
        }
        return id;
    }
    
    
      public ArrayList<ModSeg_Rol> listarRol()
    {   ArrayList<ModSeg_Rol> listaE = new ArrayList<ModSeg_Rol>();
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("SELECT *  FROM view_pas_rol_listar_rol where eliminado=false");
            rs = ps.executeQuery();
            while(rs.next())
            {   ModSeg_Rol e = new ModSeg_Rol();
                e.setId_rol(rs.getInt(1));
                e.setNombre(rs.getString(2));
                e.setDescripcion(rs.getString(3));
                listaE.add(e);
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } finally {
            try {
                rs.close();
                ps.close();
                cn.close();
            } catch (Exception ex) {
            }
        }        
       return listaE;
    }
      
      /* __________________________________________________________________ */
    /* ------------------------------------------------------------------ */
    public static ModSeg_Rol obtenerRol_ID(Integer id)
    {   ModSeg_Rol u = new ModSeg_Rol();
        ArrayList<ModSeg_Pagina> lista = new ArrayList<ModSeg_Pagina>();
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("SELECT *  FROM view_pas_rol_listar_rol r left join pas_rol_formulario rf on rf.fk_idrol=r.idrol left join pas_formulario f on f.idformulario = rf.fk_idformulario where idrol="+id);            
            rs = ps.executeQuery();
            while(rs.next())
            {   ModSeg_Pagina p=new ModSeg_Pagina();
                u.setId_rol(rs.getInt(1));
                u.setNombre(rs.getString(2));
                u.setDescripcion(rs.getString(3));
                p.setId(rs.getInt(12));
                p.setUrl(rs.getString(17));                
                p.setNombre(rs.getString(13));
                p.setModulo_id(rs.getInt(14));
                lista.add(p);
                if(p.getId()!= 0){
                    u.setLista_pag(lista);
                }
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }finally {
            try {
                rs.close();
                ps.close();
                cn.close();
            } catch (Exception ex) {
            }
        }          
       return u;
    }  


    
    
}
